package org.dxy.infrastructure.entity.query;

import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;

/**
 * @ description:
 * @ author: dxy
 * @ createTime: 2025/7/20 19:15
 */

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@TableName("production_basic_line_view")
public class ProductionLineBasicViewEntity {

    @TableId(type = IdType.INPUT)
    private Long id;

    /**
     * 产线编码，唯一标识产线（必填）
     */
    private String lineCode;

    /**
     * 产线名称，用于显示和描述（必填）
     */
    private String lineName;

    /**
     * 所属工厂ID
     */
    private Long factoryId;

    /**
     * 所属工厂名称
     */
    private String factoryName;

    /**
     * 所属车间ID
     */
    private Long workshopId;

    /**
     * 所属车间名称
     */
    private String workshopName;

    /**
     * 产线类型，例如 "ASSEMBLY"（装配线）、"TESTING"（测试线）
     */
    private String lineType;

    /**
     * 产线状态，例如 "ENABLED"（启用）、"DISABLED"（停用）
     */
    private String status;

    /**
     * 产线所在位置，自动生成：工厂名称-车间名称-产线名称
     */
    private String location;

    /**
     * 最大设备容量，限制产线可分配的设备数量（可选）
     */
    private Integer maxDeviceCapacity;

    /**
     * 支持的产品类型或类别（可选，JSON 格式或逗号分隔字符串）
     */
    private String supportedProductTypes;

    /**
     * 产线描述，记录产线的用途或备注（可选）
     */
    private String description;

    /** 创建人 */
    @TableField(fill = FieldFill.INSERT)
    private String createdBy;

    /** 创建时间 */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createdTime;

    /** 修改人 */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updatedBy;

    /** 更新时间 */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedTime;

    /** 逻辑删除标识 0-未删除 1-已删除 */
    @TableLogic
    private Integer deleted;
}
